package com.tyut.controller;

import com.tyut.pojo.Category;
import com.tyut.pojo.Result;
import com.tyut.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;

@RestController
@RequestMapping("/category")
public class CategoryController {
	@Autowired
	private CategoryService categoryService;

	/**
	 * 新增分类
	 * @param category 新增分类的信息
	 * @return 返回新增结果
	 */
	@PostMapping
	public Result add(@RequestBody @Validated(Category.Add.class)  Category category){
		//@RequestBody读取请求体中的JSON格式的数据并转换为Category对象
		//@Validated对参数进行校验，根据校验分组对于实体类中的校验条件进行校验
		categoryService.add(category);
		return Result.success();
	}

	/**
	 * 查询分类列表
	 * @return 返回分类列表
	 */
	@GetMapping
	public Result<List<Category>> list(){
		List<Category> category = categoryService.find();
		return Result.success(category);
	}
	@GetMapping("/all")
	public Result<List<Category>> listall(){
		List<Category> category = categoryService.findAll();
		return Result.success(category);
	}

	/**
	 * 根据id查询分类详情
	 * @param id 分类id
	 * @return
	 */
	@GetMapping("/detail")
	public Result<Category> findById(Integer id){
		Category category = categoryService.findById(id);
		return Result.success(category);
	}

	/**
	 * 修改分类
	 * @param category 修改后的分类信息
	 * @return 返回修改结果
	 */
	@PutMapping
	public Result update(@RequestBody @Validated(Category.Update.class)  Category category){
		categoryService.update(category);
		return Result.success();
	}

	/**
	 * 删除文章分类
	 * @param id 文章分类id
	 * @return 返回删除结果
	 */
	@DeleteMapping
	public Result delete(Integer id){
		categoryService.delete(id);
		return Result.success();
	}
}
